package com.cty.fourthDay;
/*
* 给定一个长度为 n 的整数数组 height 。
* 有 n 条垂线，第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
* 找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明：你不能倾斜容器。
* */
public class Q_5 {
    public static void main(String[] args) {

    }
    //暴力解法 时间复杂度O（n^2）空间复杂度 O（1）
    public static int maxArea(int[] height) {
       int maxArea = 0;
       for (int i = 0;i< height.length;i++) {
           for (int j = i +1;j< height.length;j++) {
               maxArea = Math.max(maxArea,Math.min(height[i],height[j]) * (j - i));
           }
       }
       return maxArea;
    }

    //双指针 从两头开始 移动索引 盛水的面积取决于 最短的那条边 所以那边短移动那边
    public static int maxArea2(int[] height) {
        if (height == null || height.length == 0) return 0;
        int left = 0,right = height.length - 1,maxArea = 0;
        while (left < right) {
            maxArea =Math.max(Math.min(height[right], height[left]) * (right - left),maxArea) ;
            if (height[right] > height[left]) {
                left++;
            } else {
                right--;
            }
        }
        return maxArea;
    }
}
